var Prestamo = function () {

return { 
init: function () {

			var urlThemes = '';
			
			var idEjemplarPrestamo = '';
			var numeroOrden = '';
			
			var gestionGroupPrestamo = new Ext.ButtonGroup({
				columns: 3,
				title: 'Gestion de prestamos',
				items: [{
					text: '<font face="arial" size=2 color=black>Prestar</font>',
					scale: 'large',
					rowspan: 3, 
					iconCls: 'select32',
					handler: function(){ 
											if(idEjemplarPrestamo != ''){ winPrestamo.show();}
											else{ Ext.example.msg('Alerta', 'Seleccione un ejemplar');}	
					}
					},{
						text: '<font face="arial" size=2 color=black>Entregar</font>',
						scale: 'large',
						rowspan: 3,
						iconCls: 'back32',
						handler: function(){ entregar(); }
					}
				]
			});
			
			var busquedaGroupPrestamo = new Ext.ButtonGroup({
				columns: 3,
				title: 'Opciones de busqueda',
				items: [{
					xtype:'splitbutton',
					text: '<font face="arial" size=2 color=black>Buscar</font>',
					scale: 'large',
					colspan: 1, 
					iconCls: 'buscar',
					menu: [
							{xtype: 'textfield', iconCls: 'buscar', id: 'IDBusquedaPrestamo', emptyText: 'buscar'},
							{text: 'Buscar por id de orden de prestamo', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'IdOrdenPrestamo', start: 0, limit: 20}});}},
							{text: 'Buscar por id de ejemplar', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'IdEjemplar', start: 0, limit: 20}});}},
							{text: 'Buscar por isbn', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'Isbn', start: 0, limit: 20}});}},
							{text: 'Buscar por titulo', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'Titulo', start: 0, limit: 20}});}},
							{text: 'Buscar por estado', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'Estado', start: 0, limit: 20}});}},
							{text: 'Buscar por codigo de usuario', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'IdUsuario', start: 0, limit: 20}});}},
							{text: 'Buscar por todos los campos', iconCls: 'item', handler: function(){ PrestamoDataStore.load({params: {Busqueda:Ext.getCmp('IDBusquedaPrestamo').getValue(), Campo:'Todos', start: 0, limit: 20}});}}
						  ]
				},{
					xtype:'splitbutton',
					text: '<font face="arial" size=2 color=black>Agrupar</font>',
					scale: 'large',
					iconCls: 'agrupar',
					colspan: 1,
					menu: [
							{text: 'Id orden de prestamo', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoNumeroOrden');}},
							{text: 'Id ejemplar', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoId');}},
							{text: 'Isbn', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoIsbn');}},
							{text: 'Titulo', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoTitulo');}},
							{text: 'Estado', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoEstado');}},
							{text: 'Codigo de usuario', iconCls: 'item', handler: function(){ PrestamoDataStore.groupBy('prestamoCodigoUsuario');}},
							{text: 'No agrupar', iconCls: 'item', handler: function(){ PrestamoDataStore.clearGrouping();}}
						  ],
					
				},{
					xtype:'splitbutton',
					text: '<font face="arial" size=2 color=black>Ordenar</font>',
					scale: 'large',
					iconCls: 'ordenar',
					colspan: 1,
					menu: [
							{text: 'Id orden de prestamo', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoNumeroOrden');}},
							{text: 'Id ejemplar', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoId');}},
							{text: 'Isbn', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoIsbn');}},
							{text: 'Titulo', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoTitulo');}},
							{text: 'Estado', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoEstado');}},
							{text: 'Codigo de usuario', iconCls: 'item', handler: function(){ PrestamoDataStore.sort('prestamoCodigoUsuario');}}
						  ],
				}]
			});
					
			var accesibilidadGroupPrestamo = new Ext.ButtonGroup({
				columns: 1,
				title: 'Accesibilidad',
				items: [{
					text: '<font face="arial" size=2 color=black>Ajustar</font>',
					scale: 'large',
					rowspan: 3, 
					iconCls: 'ajustar',
					handler: function(){
								winAyudaPrestamo.show();
							}
				},{
					xtype:'splitbutton',
					text: '<font face="arial" size=2 color=black>Temas</font>',
					scale: 'large',
					//rowspan: 3,
					iconCls: 'temas',
					menu: [
							{text: 'access', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-access.css');}},
							{text: 'black', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-black.css');}},
							{text: 'blue', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-blue.css');}},
							{text: 'chocolate', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-chocolate.css');}},
							{text: 'gray', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-gray.css');}},
							{text: 'green', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-green.css');}},
							{text: 'indigo', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-indigo.css');}},
							{text: 'midnight', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-midnight.css');}},
							{text: 'olive', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-olive.css');}},
							{text: 'peppermint', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-peppermint.css');}},
							{text: 'purple', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-purple.css');}},
							{text: 'red', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-red.css');}},
							{text: 'silverCherry', iconCls: 'docs', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-silverCherry.css');}},
							{text: 'slickness', iconCls: 'buscar', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-slickness.css');}},
							{text: 'slate', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-slate.css');}},
							{text: 'vista', handler: function(){ Ext.util.CSS.swapStyleSheet('theme', '../extjs/resources/css/xtheme-vista.css');}}
					]
				}]
			});
			
			var ayudaGroupPrestamo = new Ext.ButtonGroup({
				columns: 1,
				title: 'Ayuda',
				items: [{
					text: '<font face="arial" size=2 color=black>Ayuda</font>',
					scale: 'large',
					rowspan: 3, 
					iconCls: 'ayuda',
					handler: function(){
								winAyudaPrestamo.show();
							}
				}]
			});
			
			var PrestamoDataStore = new Ext.data.GroupingStore({
				id: 'PrestamoDataStore',
				proxy: new Ext.data.HttpProxy({
					url: 'PRESTAMO/listar', 
					method: 'POST'
				}),
				root: 'results',
				baseParams:{Busqueda:'', Campo:''},
				totalProperty: 'total',
				reader:new Ext.data.JsonReader({
						root:'results',
						totalProperty:'total',
						id:'id'
					},
					[
						{name: 'prestamoNumeroOrden', type: 'string'},
						{name: 'prestamoId', type: 'string'},
						{name: 'prestamoIsbn', type: 'string'},
						{name: 'prestamoTitulo', type: 'string'},
						{name: 'prestamoEstado', type: 'string'},
						{name: 'prestamoCodigoUsuario', type: 'string'}
					]
				),
				sortInfo:{field: 'prestamoId', direction: 'ASC'}
			});
			PrestamoDataStore.load({params: {start: 0, limit: 20}});
			
			var winAyudaPrestamo = new Ext.Window({
				title: 'Ayuda',
				closable: false,
				width: 380,
				modal: true,
				height: 280,
				items: [{ html: '<p>Aqui pongo lo de la ayuda</p>'}],
				buttons: [ {text:'Aceptar', iconCls:'agregar', handler: function(){ winAyudaPrestamo.hide();}}]
			});
			
			var formularioPrestamo = new Ext.FormPanel({
				xtype: 'fieldset',
				labelWidth: 130,
				defaultType: 'textfield',
				bodyStyle: Ext.isIE ? 'padding:5 5 5px 15px;' : 'padding: 10px 10px;',
				style: {"margin-right": Ext.isIE6 ? (Ext.isStrict ? "-10px" : "-13px") : "0" },
				items: [
				  {xtype: 'datefield', emptyText: 'seleccione la fecha de entrega', fieldLabel: 'Fecha de entrega', id: 'IDFechaEntregaPrestamo', anchor: '100%', allowBlank:false},
				  {fieldLabel: 'Codigo de usuario', emptyText: 'ingrese el codigo del usuario', id: 'IDCodigoUsuarioPrestamo', anchor: '100%', allowBlank:false}
				], 
				buttons:[
					{
						text: 'Prestar', 
						iconCls:'crear16', 
						handler: function(){ 
											if(Ext.getCmp('IDFechaEntregaPrestamo').isValid() && Ext.getCmp('IDCodigoUsuarioPrestamo').isValid() ) 
											{
												winPrestamo.hide(); 
												prestar();
											}
						}
					},
					{
						text: 'Cancelar', 
						iconCls:'eliminar16', 
						handler: function(){ 
												winPrestamo.hide();
												Ext.example.msg('Alerta', 'Operacion cancelada');
												//formularioPrestamo.getForm().reset();
						}
					}
				],
				width: 370,
				height: 150
			});
			
			var winPrestamo = new Ext.Window({
				title: 'Nuevo Prestamo',
				closable: false,
				width: 380,
				modal: true,
				height: 180,
				items: [formularioPrestamo]
			});

			var gridEjemplarPrestamos = new Ext.grid.GridPanel({
				store: PrestamoDataStore,
				columns: [
					{header: 'Numero de Orden', width: 100, sortable: true, dataIndex: 'prestamoNumeroOrden'},
					{header: 'Id Ejemplar', width: 70, sortable: true, dataIndex: 'prestamoId'},
					{header: 'Isbn', width: 100, sortable: true, dataIndex: 'prestamoIsbn'},
					{header: 'Titulo', id:'idEjemplarPrestamoTitulo', width: 150, sortable: true, dataIndex: 'prestamoTitulo'},
					{header: 'Estado', width: 120, sortable: true, dataIndex: 'prestamoEstado'},
					{header: 'Codigo de usuario', width: 120, sortable: true, dataIndex: 'prestamoCodigoUsuario'}
				],
				sm: new Ext.grid.RowSelectionModel({
					singleSelect: true,
					listeners: {
						rowselect: function(sm, row, rec) {
							idEjemplarPrestamo = rec.get('prestamoId');
							numeroOrden = rec.get('prestamoNumeroOrden');
							//Ext.example.msg('Alerta', idEjemplarPrestamo+' '+numeroOrden );
						}
					}
				}),
				tbar: [gestionGroupPrestamo, busquedaGroupPrestamo, accesibilidadGroupPrestamo, ayudaGroupPrestamo],
				stripeRows: true,
				columnLines: true,
				autoExpandColumn: 'idEjemplarPrestamoTitulo',
				autoHeight: true,
				autoWidth: true,
				//height: 600,
				//width: 610,
				title: '<font face="arial" size=2>Datos del prestamo</font>',
				stateful: true,
				stateId: 'grid',
				bbar: new Ext.PagingToolbar({
					pageSize: 20,
					store: PrestamoDataStore,
					displayInfo: true,
					displayMsg: 'Mostrando {0} - {1} de {2} prestamos',
					emptyMsg: '<font face="arial" size=2>No hay prestamos</font>',
					items:[{ scale: 'medium'}]
				}),
				view: new Ext.grid.GroupingView()
			});
			
			gridEjemplarPrestamos.render('prestamo');
			
			function prestar(){
				Ext.Ajax.request({  
				waitMsg: 'Espere por favor',
				url: 'PRESTAMO/prestar', 
				params: {
					IdEjemplar: idEjemplarPrestamo,
					NumeroOrden: numeroOrden,
					CodigoUsuario: Ext.getCmp('IDCodigoUsuarioPrestamo').getValue(),
					FechaEntrega: Ext.getCmp('IDFechaEntregaPrestamo').getValue()
				},
				success: function(response, action){	  
					obj = Ext.util.JSON.decode(response.responseText);
					if (obj.success)
					{
						Ext.example.msg('Alerta', obj.mensaje);
						PrestamoDataStore.reload();
					}	
					else if (obj.success == false)
					{
						Ext.example.msg('Error', obj.errors.reason);
					}
				},
				failure: function(response){
					var result=response.responseText;
					Ext.example.msg('Error', 'no se pudo conectar a la base de datos intente mas tarde');  
				}
				});
				idEjemplarPrestamo = '';
				numeroOrden = '';
			}
			
			function entregar(){
				if(idEjemplarPrestamo != ''){
					Ext.Ajax.request({  
					waitMsg: 'Espere por favor',
					url: 'PRESTAMO/entregar', 
					params: {
						IdEjemplar: idEjemplarPrestamo,
						NumeroOrden: numeroOrden
					},
					success: function(response, action){	  
						obj = Ext.util.JSON.decode(response.responseText);
						if (obj.success)
						{
							Ext.example.msg('Alerta', obj.mensaje);
							PrestamoDataStore.reload();
						}	
						else if (obj.success == false)
						{
							Ext.example.msg('Error', obj.errors.reason);
						}
					},
					failure: function(response){
						Ext.example.msg('Error', 'no se pudo conectar a la base de datos intente mas tarde'); 
					}
					});
				}
				else{
					Ext.example.msg('Alerta', 'Seleccione un ejemplar');
				}
				idEjemplarPrestamo = '';
				numeroOrden = '';
			}
		}
	}
}();